\contentsline {chapter}{\numberline {1}Introduction}{4}{chapter.1}
\contentsline {chapter}{\numberline {2}Requirements}{6}{chapter.2}
\contentsline {section}{\numberline {2.1}Problem definition \& analysis}{6}{section.2.1}
\contentsline {section}{\numberline {2.2}Features}{9}{section.2.2}
\contentsline {section}{\numberline {2.3}Summary}{13}{section.2.3}
\contentsline {chapter}{\numberline {3}System Architecture}{14}{chapter.3}
\contentsline {section}{\numberline {3.1}Choosing an architecture}{14}{section.3.1}
\contentsline {section}{\numberline {3.2}Summary}{15}{section.3.2}
\contentsline {chapter}{\numberline {4}Protocol}{16}{chapter.4}
\contentsline {section}{\numberline {4.1}Syntax}{16}{section.4.1}
\contentsline {section}{\numberline {4.2}Semantics}{18}{section.4.2}
\contentsline {section}{\numberline {4.3}Error Handling}{19}{section.4.3}
\contentsline {section}{\numberline {4.4}Interaction}{19}{section.4.4}
\contentsline {section}{\numberline {4.5}Channels}{20}{section.4.5}
\contentsline {section}{\numberline {4.6}Evolution}{20}{section.4.6}
\contentsline {section}{\numberline {4.7}Known Issues}{21}{section.4.7}
\contentsline {chapter}{\numberline {5}Client}{22}{chapter.5}
\contentsline {section}{\numberline {5.1}Architecture Design}{22}{section.5.1}
\contentsline {section}{\numberline {5.2}Architecture Review}{24}{section.5.2}
\contentsline {section}{\numberline {5.3}GUI Design}{26}{section.5.3}
\contentsline {subsection}{\numberline {5.3.1}Main window}{26}{subsection.5.3.1}
\contentsline {subsection}{\numberline {5.3.2}Registration window}{30}{subsection.5.3.2}
\contentsline {subsection}{\numberline {5.3.3}Login window}{32}{subsection.5.3.3}
\contentsline {subsection}{\numberline {5.3.4}Other windows}{32}{subsection.5.3.4}
\contentsline {section}{\numberline {5.4}GUI Implementation}{33}{section.5.4}
\contentsline {subsection}{\numberline {5.4.1}Problems Encountered}{33}{subsection.5.4.1}
\contentsline {subsection}{\numberline {5.4.2}Critical Reflection}{36}{subsection.5.4.2}
\contentsline {subsection}{\numberline {5.4.3}Known Issues}{36}{subsection.5.4.3}
\contentsline {section}{\numberline {5.5}Evaluation}{37}{section.5.5}
\contentsline {section}{\numberline {5.6}Summary}{39}{section.5.6}
\contentsline {chapter}{\numberline {6}Server}{40}{chapter.6}
\contentsline {section}{\numberline {6.1}Design}{40}{section.6.1}
\contentsline {subsection}{\numberline {6.1.1}Network Controller}{41}{subsection.6.1.1}
\contentsline {subsection}{\numberline {6.1.2}Client Controller}{41}{subsection.6.1.2}
\contentsline {subsection}{\numberline {6.1.3}Storage}{41}{subsection.6.1.3}
\contentsline {subsection}{\numberline {6.1.4}Models}{42}{subsection.6.1.4}
\contentsline {subsection}{\numberline {6.1.5}Protocol Framework}{43}{subsection.6.1.5}
\contentsline {section}{\numberline {6.2}Implementation}{44}{section.6.2}
\contentsline {subsection}{\numberline {6.2.1}Threading \& Synchronisation}{45}{subsection.6.2.1}
\contentsline {subsection}{\numberline {6.2.2}External Libraries}{45}{subsection.6.2.2}
\contentsline {subsection}{\numberline {6.2.3}Issues}{46}{subsection.6.2.3}
\contentsline {section}{\numberline {6.3}Evaluation}{46}{section.6.3}
\contentsline {chapter}{\numberline {7}Integration Testing}{48}{chapter.7}
\contentsline {section}{\numberline {7.1}Strategy}{48}{section.7.1}
\contentsline {section}{\numberline {7.2}Results}{48}{section.7.2}
\contentsline {section}{\numberline {7.3}Summary}{51}{section.7.3}
\contentsline {chapter}{\numberline {8}Conclusion}{52}{chapter.8}
\contentsline {chapter}{\numberline {A}Protocol Specification}{54}{appendix.A}
\contentsline {section}{\numberline {A.1}Client Actions (pre-login)}{54}{section.A.1}
\contentsline {section}{\numberline {A.2}Client Actions (post-login)}{55}{section.A.2}
\contentsline {section}{\numberline {A.3}Client Requests}{58}{section.A.3}
\contentsline {section}{\numberline {A.4}Server Actions}{60}{section.A.4}
\contentsline {section}{\numberline {A.5}Heartbeat}{61}{section.A.5}
\contentsline {chapter}{\numberline {B}Organisation \& Scheduling}{62}{appendix.B}
\contentsline {section}{\numberline {B.1}Team Structure}{62}{section.B.1}
\contentsline {section}{\numberline {B.2}Schedules}{62}{section.B.2}
\contentsline {section}{\numberline {B.3}Version Control}{63}{section.B.3}
\contentsline {chapter}{\numberline {C}Contributions}{64}{appendix.C}
\contentsline {chapter}{\numberline {D}Test Scripts}{66}{appendix.D}
\contentsline {section}{\numberline {D.1}Server}{66}{section.D.1}
\contentsline {section}{\numberline {D.2}Integration}{67}{section.D.2}
